<template>
    <div class="header">
      <!-- Content before waves -->
      <div class="inner-header flex">
        <h1 v-show="!isConsultant">您的身份是?</h1>
        <div class="button-container" v-show="!isConsultant">
            <button @click="switchToConsultant">我是管理员</button>
        </div>
        
        <h1 v-show="isConsultant" style="margin-top: 100px;">管理员</h1>
        <transition name="slide">
            <login v-show="isConsultant" @login="handleLogin" @back="switchToAdmin" />
        </transition>
      </div>
  
      <!-- Waves Container -->
      <div>
        <svg
          class="waves"
          xmlns="http://www.w3.org/2000/svg"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          viewBox="0 24 150 28"
          preserveAspectRatio="none"
          shape-rendering="auto"
        >
          <defs>
            <path
              id="gentle-wave"
              d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"
            />
          </defs>
          <g class="parallax">
            <use xlink:href="#gentle-wave" x="48" y="0" fill="rgba(255,255,255,0.7)" />
            <use xlink:href="#gentle-wave" x="48" y="3" fill="rgba(255,255,255,0.5)" />
            <use xlink:href="#gentle-wave" x="48" y="5" fill="rgba(255,255,255,0.3)" />
            <use xlink:href="#gentle-wave" x="48" y="7" fill="#fff" />
          </g>
        </svg>
      </div>
      <!-- Waves end -->
    </div>
    <!-- Header ends -->
  
    <!-- Content starts -->
    <div class="content flex">
      <p>By.Goodkatz | Free to use</p>
    </div>
    <!-- Content ends -->
  </template>
  
<script setup>
import { ref, defineEmits } from 'vue';
import { useRouter } from 'vue-router';
import { onMounted } from 'vue';
import login from './login/login.vue';

const isConsultant = ref(false);
const emit = defineEmits(['updateSpan']);
const router = useRouter(); // 获取路由实例

function switchToAdmin() {
  isConsultant.value = false;
  emit('updateSpan', 'reset');
}

function switchToConsultant() {
  isConsultant.value = true;
  emit('updateSpan', 'admin');
}

// 处理登录逻辑
async function handleLogin(loginData) {
    try {
      // 构建查询参数
      const queryParams = new URLSearchParams({
          username: loginData.username,
          password: loginData.password,
      }).toString();
  
      // 发起请求
      const response = await fetch(`/api/hqy/admin/login?${queryParams}`, {
        method: 'POST',
      });
  
      const res = await response.json();
  
      
      if (res.code === 200) {
        // 登录成功，将用户信息存储到 sessionStorage
        sessionStorage.setItem('admin', JSON.stringify(res.data));
        alert('Login success!');
        // 跳转到首页或其他页面
        router.push('/layout'); // 使用 router.push 进行跳转
      } else {
        // 登录失败，显示错误信息
        alert(`Login failed: ${res.message}`);
      }
    } catch (error) {
      console.error('Login request failed:', error);
      alert('Login request failed. Please try again later.');
    }
  }

onMounted(() => {
  console.log('CSS Waves component mounted');
});
  </script>
  
  <style lang="scss" scoped>
  @import url(//fonts.googleapis.com/css?family=Lato:300:400);
  
  body {
    margin: 0;
    padding: 0;
  }
  
  h1 {
    text-align: center;
    color: #fff;
    font-size: 50px;
  }
  
  p {
    font-family: 'Lato', sans-serif;
    letter-spacing: 1px;
    font-size: 14px;
    color: #333333;
  }
  
  .header {
    margin-top: 15px;
    position: relative;
    text-align: center;
    background: linear-gradient(
      60deg,
      rgba(84, 58, 183, 1) 0%,
      rgba(0, 172, 193, 1) 100%
    );
    color: white;
  }
  
  .logo {
    width: 50px;
    fill: white;
    padding-right: 15px;
    display: inline-block;
    vertical-align: middle;
  }
  
  .inner-header {
    min-height: 80vh;
    width: 100%;
    margin: 0;
    padding: 0;
  }
  
  .flex {
    /* Flexbox for containers */
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
  }
  
  .waves {
    position: relative;
    width: 100%;
    height: 15vh;
    margin-bottom: -7px; /* Fix for safari gap */
    min-height: 100px;
    max-height: 150px;
  }
  
  .content {
    position: relative;
    height: 20vh;
    text-align: center;
    background-color: white;
  }
  .content1 {
    margin-top: 20px;
    padding: 20px;
    background-color: white;
    border-radius: 8px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    width: 100%;
    transition: all 0.5s;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
  }
  
  /* Animation */
  .parallax > use {
    animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite;
  }
  
  .parallax > use:nth-child(1) {
    animation-delay: -2s;
    animation-duration: 7s;
  }
  
  .parallax > use:nth-child(2) {
    animation-delay: -3s;
    animation-duration: 10s;
  }
  
  .parallax > use:nth-child(3) {
    animation-delay: -4s;
    animation-duration: 13s;
  }
  
  .parallax > use:nth-child(4) {
    animation-delay: -5s;
    animation-duration: 20s;
  }
  
  @keyframes move-forever {
    0% {
      transform: translate3d(-90px, 0, 0);
    }
    100% {
      transform: translate3d(85px, 0, 0);
    }
  }
  
  /* Shrinking for mobile */
  @media (max-width: 768px) {
    .waves {
      height: 40px;
      min-height: 40px;
    }
    .content {
      height: 30vh;
    }
    h1 {
      font-size: 24px;
    }
  }

  
  .button-container {
    margin-top: 20px;
    text-align: center;
  
    button {
      margin: 0 10px;
      margin-right: 15px;
      padding: 8px 16px;
      font-size: 30px;
      cursor: pointer;
      background-color: #04051b;
      color: white;
      border: none;
      border-radius: 4px;
      transition: background-color 0.3s;
    }
  
    button:hover {
      background-color: #8f94fb;
    }
  }
  
  .content {
    margin-top: 20px;
    padding: 20px;
    background-color: white;
    border-radius: 8px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    width: 100%;
    transition: all 0.5s;
    box-sizing: border-box;
  }
  
  /* 重新设计的过渡动画 */
.slide-enter-active {
  animation: slideIn 0.5s forwards;
}

.slide-leave-active {
  animation: slideOut 0.5s forwards;
}

@keyframes slideIn {
  from {
    width: 0%;
    opacity: 0;
  }
  to {
    width: 400px;
    opacity: 1;
  }
}

@keyframes slideOut {
  from {
    width: 400px;
    opacity: 1;
  }
  to {
    width: 15%;
    opacity: 0;
  }
}
  </style>